Linked lists may be used to facilitate the allocation of blocks of memory in a shared memory system to a group of devices. Each device in the group may be associated with a linked list that allows that device to retrieve contiguous or non-contiguous blocks of memory from the memory system or to store data in contiguous or non-contiguous blocks of memory. For example, the linked list may include addresses that indicate that the device is to be allocated blocks 1, 5, 15, 30, and 50 from the memory system. The device may then retrieve data from or store data in block 1, retrieve data from or store data in block 5, retrieve data from or store data in block 15, retrieve data from or store data in block 30, and retrieve data from or store data in block 50.
In some instances, the linked list structure may become corrupt due to, for example, noise or a software error. A corrupt address in a linked list may cause the entire linked list, and corresponding memory blocks, to be lost. Over time, this can contribute to a severe depletion of memory space.
Accordingly, there is a need for systems and methods for recovering lost memory blocks in linked list systems.